會有這個需求是因為我在修改前人的專案,然後發現在茫茫大海中指引我的,是VS Code旁邊顯示我做過哪些更改,但git還沒儲存的標記。
我需要這些...所以產生了需求!
總之,結論就是先大膽Commit目前更新的內容,可以順便取個版本tag(假設這版叫2.0.1)。
git add .
git commit -m "修改了ABC..."
git tag v2.0.1
接著切換到舊節點開新分支,此處的舊節點就是前一個節點所以直接用HEAD^
即可,否則也可以用commit的hash編號代替,然後-b
的參數可以直接開新分支(這裡命名分支為workCompare)。
git checkout HEAD^ -b workCompare
然後這裡就是關鍵,使出git cherry-pick --no-commit 要移過來的commit編號或分支
,這裡的--no-commit
會讓移過來的內容不要被commit,而是只加入到暫存區(add)而已。
(--no-commit
也可以用-n
代替)
git cherry-pick -n v2.0.1
最後用git status
確認一下狀態是加入了暫存區,所以再用git restore --staged .
把所有檔案還原回工作區,VS Code的標記就會開心地回來了~
git status
git restore --staged .
缺點是過程中弄得有點雜亂,如果VS Code有設定或外掛可以指定讓旁邊的標記顯示跟哪個版本的比對,感覺才是最好的解,或許有天找到了再來更新文章。
參考資料:
【狀況題】如果你只想要某個分支的某幾個 Commit?